iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0

菜菜菜的 Vue 30天 - Day6

v-model

繼上一章介紹了單向綁定,這章就來介紹一下雙向綁定。

單向綁定是能夠將 data 綁定到 html tag 上,那雙向綁定呢?!

雙向綁定顧名思義就是除了將 data 綁定到 html tag 之外,html tag 值的改變也會連動改變 data 的值。

相信可能有人看到這段文字發現了什麼。

沒錯!!就是 html tag 值(value)的改變這句。

一般的 html tag 並不會存在所謂的 value,所以 v-model 使用的情境就是在綁定 form 表單相關的元素,這些元素才存在著所謂的值(value)。

如果還是不太清楚沒關係,我們來實際的練習一下。

GO!!

<body>
    <div id="app">
        <input type="text" v-model="message">
        {{message}}
    </div>
</body>
<script>
    const vm = new Vue({
      el: '#app',
      data: {
            message: ''
      }
    })

看到這程式碼應該知道我要做什麼了吧~

我對 input 加上了雙向綁定,綁定到 message 上並透過 {{}} 渲染出來,如下:

再來另外一個練習好了,對 select 做雙向綁定:

<body>
    <div id="app">
        <select v-model="selected">
            <option disabled value="">跑腿小弟</option>
            <option value="Arel">Arel</option>
            <option value="Hugh">Hugh</option>
            <option value="Kai">Kai</option>
        </select>
        <p>今天要去買便當的是: {{ selected }}</p>
    </div>
</body>
<script>
    const vm = new Vue({
      el: '#app',
      data: {
            selected: ''
      }
    })
</script>	

對 select 做雙向綁定的部分,v-model 是要加在 <select>上,而不是加在 <option> 上喲!!

來看一下效果吧~

v-model 原理

雖然說 v-model 是雙向綁定,但是其實這裡面是包含了 2 個部分。

一個是前一章提到的單向綁定 v-bind:,另外一個就是 @input

<input
    v-bind:value="something"
    v-on:input="something = $event.target.value">

實現的原理就是,先將 data 綁定到 input 上,接下來使用者在 input 輸入值時就會去觸發 v-on:input 去改變 data 的值。

v-on:input 可能不知道是什麼,他其實就是等於 js 原生的 oninput 事件。

我們在下一章就會介紹 event handling囉~


上一篇
v-bind 綁定語法
下一篇
event handler
系列文
菜菜菜的 Vue 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言